<?php
/**
 * Emai:y7wanghui@gmai.com
 * Date: 2020/10/31 0031
 */

require_once 'lib/common.php';

function installBlog()
{
    // 获取 PDO  DSN的字符串
    $root = getRootPath();
    $database = getDatabasePath();
    $error = '';

    // 一种安全措施，以避免任何人重置数据库（如果已存在）
    if (is_readable($database) && filesize($database) > 0)
    {
        $error = '请在重新安装之前手动删除现有数据库data_v3/data/data.sqlite';

    }
    // 为数据库创建一个空文件
    if (!$error) {
        $createdOk = @touch($database);
        if (!$createdOk) {
            $error = sprintf('无法创建数据库，请允许服务器在以下位置创建新文件 \'%s\'', dirname($database));
        }
    }
    // 抓取我们要在数据库上运行的SQL命令
    if (!$error) {
        $sql = file_get_contents($root . './../data/init.sql');
        if ($sql === false) {
            $error = '找不到SQL文件';
        }
    }
    //连接到新数据库并尝试运行SQL命令if (!$error)
    if (!$error){
        $pdo = getPDO();
        $result  = $pdo->exec($sql);
        if ($result === false) {
            $error = '无法运行SQL,请删除data_v3/data/data.sqlite 。错误：' . print_r($pdo->errorInfo(), true);
        }
    }
    // 查看我们创建了多少行（如果有）
    $count = array();
    foreach(array('post', 'comment') as $tableName)
    {
        if (!$error)
        {
            $sql = "SELECT COUNT(*) AS c FROM " . $tableName;
            $stmt = $pdo->query($sql);
            if ($stmt)
            {
                // 我们将每个计数存储在关联数组中
                $count[$tableName] = $stmt->fetchColumn();
            }
        }
    }
    return array($count, $error);

}
//我们将内容存储在会话中，以免重定向到self
session_start();
// 仅在我们响应表单时运行安装程序
if ($_POST)
{
    // 这是安装
    list($_SESSION['count'], $_SESSION['error']) = installBlog();
    //...在这里，我们从POST重定向到GET
    redirectAndExit('install.php');

}
// 让我们看看是否已经安装
$attempted = false;
if ($_SESSION)
{
    $attempted = true;
    $count = $_SESSION['count'];
    $error = $_SESSION['error'];
    // 未设置会话变量，因此我们只报告一次安装/失败
    unset($_SESSION['count']);
    unset($_SESSION['error']);
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Blog installer</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <style type="text/css">
        .box {
            border: 1px dotted silver;
            border-radius: 5px;
            padding: 4px;
        }
        .error {
            background-color: #ff6666;
        }
        .success {
            background-color: #88ff88;
        }
    </style>
</head>
<body>
<?php if ($attempted): ?>
    <?php if ($error): ?>
        <div class="error box">
            <?php echo $error ?>
        </div>
    <?php else: ?>
        <div class="success box">
            数据库和演示数据创建成功。.
            <?php foreach (array('post', 'comment') as $tableName): ?>
                <?php if (isset($count[$tableName])): ?>
                    <!--几条数据-->
                    <?php echo $count[$tableName] ?> 条
                    <!--数据表名 ?-->
                    <?php echo $tableName ?>s
                    创建成功.
                <?php endif ?>
            <?php endforeach ?>
        </div>
        <p>
            <a href="index.php">首页</a>,
            or <a href="install.php">重新安装</a>.
        </p>
    <?php endif ?>
<?php else: ?>
    <p>点击这里创建数据库.</p>
    <form method="post">
        <input name="install" type="submit" value="安装"/>
    </form>
<?php endif ?>
</body>
</html>